package chapter02

import chapter01.Student

/**
  * create by unseRdoG on  2021-05-28  10:58
  */
object Test02_Variable {

  def main(args: Array[String]): Unit = {
    //  声明一个变量的通用语法
    var a: Int = 10

    //  (1)声明变量时，类型可以省略，编译器自动推导，即类型推导
    var a1 = 10
    val b1 =3

    // (2)类型确定后，不能修改，说明Scala是强类型语言
    var a2 = 15        // 此时a2 的类型已经被自动推断为 int类型，不能再设为其他类型
    //a2 = "aaa"

    // (3) 变量声明时，必须要有初始值
    //var a3

    //(4) 在声明定义一个变量时，可以使用 var 或者 val 来修饰，var修饰的变量可以改变，val修饰的变量不能改变

    a1 = 12
    //b1 = 15



    // 对于引用类型
    val alice = new Student("alice",20)
    //此时的alice 是一个 val 常量  因此不能修改她的值
    //alice = new Student("bob",30)

    /**
    *
      * 但是 被 val 修饰的 alice 引用的对象不能改变，但对象中的值可以改变
      * 这里需要做的是，在其 Student 类上，要定义其属性，即 括号中 即定义了类的属性，也定义了其构造方法
      *  需要注意的是，属性在定义时，要用var 修饰，  否则其对象的值仍然是无法修改的
      *
    * */

    alice.age=30

    alice.printInfo()

  }
}
